package personal.wang.enm;


import personal.wang.abs.AbstractMessageHandler;

/**
 * @className: MessageType
 * @Description: flag 字段是 int 类型，它是 32 bit 位数
 * 4 级 0000 0000 | 3 级 0000 0000 | 2 级 0000 0000 | 1 级 0000 0000
 * 1 级：第一级消息分类。
 * @Author: wangyifei
 * @Date: 2024/6/4 15:58
 */
public enum MessageType {
     DATA_REQUEST( 0b00000001 , null),//请求数据，data 为 long ，offset 的值
     OFFSET_COMMIT_REQUEST( 0b00000010 , null),// -> 提交 offset ， data 为 long ，offset 的值
     HEART_BEAT_REQUEST(0b00000011 , null),// 提交心跳 ， data 为 IP +　state
     DATA_RESPONSE(0b10000001 , null),// -> 发送数据，data 为数据，byte[]
     COMMAND_MESSAGE(0b00000100 , null),// -> 发送数据，data 为数据，byte[]

    WORKER_INFO_COMMAND_MESSAGE(0b0000000100000100 , null),// -> 发送数据，data 为数据，byte[]

    TO_WORKER_COMMAND_MESSAGE(0b00000101 , null),// -> 发送数据，data 为数据，byte[]
    TEMPLATE_MESSAGE(0b00000110 , null),// -> 发送数据，data 为数据，byte[]
    ACK_MESSAGE(0b00000111 , null)// -> 发送数据，data 为数据，byte[]
    ;

    int flag ;
    AbstractMessageHandler handler ;
    MessageType(int flag , AbstractMessageHandler handler){
        this.flag = flag ;
        this.handler = handler;
    }

    public int getFlag() {
        return flag;
    }
    public AbstractMessageHandler getHandler(){
        return this.handler;
    }

    public void setHandler(AbstractMessageHandler handler) {
        this.handler = handler;
    }

    public void setFlag(int flag) {
        this.flag = flag;
    }
}
